Hallo zusammen,
für eine spezielle Abfrage habe ich folgenden regulären Ausdruck zusammengebastelt bekommen, der auch auf diversen Testseiten im Netz funktioniert (allerdings ohne VBA-Sprachbezug).
Regulärer Ausdruck:
(^123[0-9A-Z]{3}XXXX$)|(^321[0-9A-Z]{3}[A-Z]{4}(?<!XXXX)$)
(Gewünschtes) Ergebnis:
123ABCXXXX
123ABCYYYY
321ABCYYYY
321ABCXXXX
Versuche ich diesen regulären Ausdruck in meinem VBA-Code zu verwenden, erhalte ich immer einen Laufzeitfehler '5017': Die Methode 'Test' für das Objekt 'IRegExp2' ist fehlgeschlagen.
Hier mein VBA-Codeschnipsel:
Option Explicit
Public Sub TestRegExp()
Dim Text(3) As String
Text(0) = "123ABCXXXX"
Text(1) = "123ABCYYYY"
Text(2) = "321ABCYYYY"
Text(3) = "321ABCXXXX"
Dim RegEx As RegExp
Set RegEx = New RegExp
Dim Muster As String
Muster = "(^123[0-9A-Z]{3}XXXX$)|(^321[0-9A-Z]{3}[A-Z]{4}(?<!XXXX)$)"
'Muster = "(^123[0-9A-Z]{3}XXXX$)|(^321[0-9A-Z]{3}[A-Z]{4}$)"
RegEx.Pattern = Muster
Dim i As Integer
For i = 0 To UBound(Text)
Debug.Print "Prüfe: " + Text(i) + ", Ergebnis: " + CStr(RegEx.Test(Text(i)))
Next
End Sub
Bei meiner Suche im Netz bin ich auf Hinweise gestoßen, dass VBA evtl. Lookbehind nicht unterstützt und ich suche nun händeringend nach einer Alternative oder Lösung.
Vielen Dank für Eure Antworten, Ideen und Tipps im Voraus.
Viele Grüße
Klaus
|